{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Pretrained Classifier\n",
    "\n",
    "This notebook uses a pretrained model to build a classifier (CNN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "# import required libs\n",
    "import os\n",
    "import keras\n",
    "import numpy as np\n",
    "from keras import backend as K\n",
    "from keras import applications\n",
    "from keras.datasets import cifar10\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense, Dropout, Flatten\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "params = {'legend.fontsize': 'x-large',\n",
    "          'figure.figsize': (15, 5),\n",
    "         'axes.labelsize': 'x-large',\n",
    "         'axes.titlesize':'x-large',\n",
    "         'xtick.labelsize':'x-large',\n",
    "         'ytick.labelsize':'x-large'}\n",
    "\n",
    "plt.rcParams.update(params)\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load VGG"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "vgg_model = applications.VGG19(include_top=False, weights='imagenet')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_1 (InputLayer)         (None, None, None, 3)     0         \n",
      "_________________________________________________________________\n",
      "block1_conv1 (Conv2D)        (None, None, None, 64)    1792      \n",
      "_________________________________________________________________\n",
      "block1_conv2 (Conv2D)        (None, None, None, 64)    36928     \n",
      "_________________________________________________________________\n",
      "block1_pool (MaxPooling2D)   (None, None, None, 64)    0         \n",
      "_________________________________________________________________\n",
      "block2_conv1 (Conv2D)        (None, None, None, 128)   73856     \n",
      "_________________________________________________________________\n",
      "block2_conv2 (Conv2D)        (None, None, None, 128)   147584    \n",
      "_________________________________________________________________\n",
      "block2_pool (MaxPooling2D)   (None, None, None, 128)   0         \n",
      "_________________________________________________________________\n",
      "block3_conv1 (Conv2D)        (None, None, None, 256)   295168    \n",
      "_________________________________________________________________\n",
      "block3_conv2 (Conv2D)        (None, None, None, 256)   590080    \n",
      "_________________________________________________________________\n",
      "block3_conv3 (Conv2D)        (None, None, None, 256)   590080    \n",
      "_________________________________________________________________\n",
      "block3_conv4 (Conv2D)        (None, None, None, 256)   590080    \n",
      "_________________________________________________________________\n",
      "block3_pool (MaxPooling2D)   (None, None, None, 256)   0         \n",
      "_________________________________________________________________\n",
      "block4_conv1 (Conv2D)        (None, None, None, 512)   1180160   \n",
      "_________________________________________________________________\n",
      "block4_conv2 (Conv2D)        (None, None, None, 512)   2359808   \n",
      "_________________________________________________________________\n",
      "block4_conv3 (Conv2D)        (None, None, None, 512)   2359808   \n",
      "_________________________________________________________________\n",
      "block4_conv4 (Conv2D)        (None, None, None, 512)   2359808   \n",
      "_________________________________________________________________\n",
      "block4_pool (MaxPooling2D)   (None, None, None, 512)   0         \n",
      "_________________________________________________________________\n",
      "block5_conv1 (Conv2D)        (None, None, None, 512)   2359808   \n",
      "_________________________________________________________________\n",
      "block5_conv2 (Conv2D)        (None, None, None, 512)   2359808   \n",
      "_________________________________________________________________\n",
      "block5_conv3 (Conv2D)        (None, None, None, 512)   2359808   \n",
      "_________________________________________________________________\n",
      "block5_conv4 (Conv2D)        (None, None, None, 512)   2359808   \n",
      "_________________________________________________________________\n",
      "block5_pool (MaxPooling2D)   (None, None, None, 512)   0         \n",
      "=================================================================\n",
      "Total params: 20,024,384\n",
      "Trainable params: 20,024,384\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "vgg_model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Set Parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "batch_size = 128\n",
    "num_classes = 10\n",
    "epochs = 50\n",
    "\n",
    "bottleneck_path = r'F:\\work\\kaggle\\cifar10_cnn\\bottleneck_features_train_vgg19.npy'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Get CIFAR10 Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# the data, shuffled and split between train and test sets\n",
    "(x_train, y_train), (x_test, y_test) = cifar10.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_train shape: (50000, 32, 32, 3)\n",
      "50000 train samples\n",
      "10000 test samples\n"
     ]
    }
   ],
   "source": [
    "print('x_train shape:', x_train.shape)\n",
    "print(x_train.shape[0], 'train samples')\n",
    "print(x_test.shape[0], 'test samples')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(50000, 10)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# convert class vectors to binary class matrices\n",
    "y_train = keras.utils.to_categorical(y_train, num_classes)\n",
    "y_test = keras.utils.to_categorical(y_test, num_classes)\n",
    "\n",
    "y_train.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Pretrained Model for Feature Extraction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "if not os.path.exists(bottleneck_path):\n",
    "    bottleneck_features_train = vgg_model.predict(x_train,verbose=1)\n",
    "    np.save(open(bottleneck_path, 'wb'),\n",
    "            bottleneck_features_train)\n",
    "else:\n",
    "    bottleneck_features_train = np.load(open(bottleneck_path,'rb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1, 1, 512)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bottleneck_features_train[0].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 238s   \n"
     ]
    }
   ],
   "source": [
    "bottleneck_features_test = vgg_model.predict(x_test,verbose=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Custom Classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true,
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "clf_model = Sequential()\n",
    "clf_model.add(Flatten(input_shape=bottleneck_features_train.shape[1:]))\n",
    "clf_model.add(Dense(512, activation='relu'))\n",
    "clf_model.add(Dropout(0.5))\n",
    "clf_model.add(Dense(256, activation='relu'))\n",
    "clf_model.add(Dropout(0.5))\n",
    "clf_model.add(Dense(num_classes, activation='softmax'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualize the network architecture"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg height=\"553pt\" viewBox=\"0.00 0.00 343.00 553.00\" width=\"343pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 549)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" points=\"-4,4 -4,-549 339,-549 339,4 -4,4\" stroke=\"none\"/>\n",
       "<!-- 2250072534264 -->\n",
       "<g class=\"node\" id=\"node1\"><title>2250072534264</title>\n",
       "<polygon fill=\"none\" points=\"0,-498.5 0,-544.5 335,-544.5 335,-498.5 0,-498.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"83.5\" y=\"-517.8\">flatten_1_input: InputLayer</text>\n",
       "<polyline fill=\"none\" points=\"167,-498.5 167,-544.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"195\" y=\"-529.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"167,-521.5 223,-521.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"195\" y=\"-506.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"223,-498.5 223,-544.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"279\" y=\"-529.3\">(None, 1, 1, 512)</text>\n",
       "<polyline fill=\"none\" points=\"223,-521.5 335,-521.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"279\" y=\"-506.3\">(None, 1, 1, 512)</text>\n",
       "</g>\n",
       "<!-- 2250072533760 -->\n",
       "<g class=\"node\" id=\"node2\"><title>2250072533760</title>\n",
       "<polygon fill=\"none\" points=\"29,-415.5 29,-461.5 306,-461.5 306,-415.5 29,-415.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"83.5\" y=\"-434.8\">flatten_1: Flatten</text>\n",
       "<polyline fill=\"none\" points=\"138,-415.5 138,-461.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"166\" y=\"-446.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"138,-438.5 194,-438.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"166\" y=\"-423.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"194,-415.5 194,-461.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"250\" y=\"-446.3\">(None, 1, 1, 512)</text>\n",
       "<polyline fill=\"none\" points=\"194,-438.5 306,-438.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"250\" y=\"-423.3\">(None, 512)</text>\n",
       "</g>\n",
       "<!-- 2250072534264&#45;&gt;2250072533760 -->\n",
       "<g class=\"edge\" id=\"edge1\"><title>2250072534264-&gt;2250072533760</title>\n",
       "<path d=\"M167.5,-498.366C167.5,-490.152 167.5,-480.658 167.5,-471.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"171,-471.607 167.5,-461.607 164,-471.607 171,-471.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 2250072541952 -->\n",
       "<g class=\"node\" id=\"node3\"><title>2250072541952</title>\n",
       "<polygon fill=\"none\" points=\"46,-332.5 46,-378.5 289,-378.5 289,-332.5 46,-332.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"98\" y=\"-351.8\">dense_1: Dense</text>\n",
       "<polyline fill=\"none\" points=\"150,-332.5 150,-378.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"178\" y=\"-363.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"150,-355.5 206,-355.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"178\" y=\"-340.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"206,-332.5 206,-378.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"247.5\" y=\"-363.3\">(None, 512)</text>\n",
       "<polyline fill=\"none\" points=\"206,-355.5 289,-355.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"247.5\" y=\"-340.3\">(None, 512)</text>\n",
       "</g>\n",
       "<!-- 2250072533760&#45;&gt;2250072541952 -->\n",
       "<g class=\"edge\" id=\"edge2\"><title>2250072533760-&gt;2250072541952</title>\n",
       "<path d=\"M167.5,-415.366C167.5,-407.152 167.5,-397.658 167.5,-388.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"171,-388.607 167.5,-378.607 164,-388.607 171,-388.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 2250072541392 -->\n",
       "<g class=\"node\" id=\"node4\"><title>2250072541392</title>\n",
       "<polygon fill=\"none\" points=\"33,-249.5 33,-295.5 302,-295.5 302,-249.5 33,-249.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"98\" y=\"-268.8\">dropout_1: Dropout</text>\n",
       "<polyline fill=\"none\" points=\"163,-249.5 163,-295.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"191\" y=\"-280.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"163,-272.5 219,-272.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"191\" y=\"-257.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"219,-249.5 219,-295.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"260.5\" y=\"-280.3\">(None, 512)</text>\n",
       "<polyline fill=\"none\" points=\"219,-272.5 302,-272.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"260.5\" y=\"-257.3\">(None, 512)</text>\n",
       "</g>\n",
       "<!-- 2250072541952&#45;&gt;2250072541392 -->\n",
       "<g class=\"edge\" id=\"edge3\"><title>2250072541952-&gt;2250072541392</title>\n",
       "<path d=\"M167.5,-332.366C167.5,-324.152 167.5,-314.658 167.5,-305.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"171,-305.607 167.5,-295.607 164,-305.607 171,-305.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 2249866395832 -->\n",
       "<g class=\"node\" id=\"node5\"><title>2249866395832</title>\n",
       "<polygon fill=\"none\" points=\"46,-166.5 46,-212.5 289,-212.5 289,-166.5 46,-166.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"98\" y=\"-185.8\">dense_2: Dense</text>\n",
       "<polyline fill=\"none\" points=\"150,-166.5 150,-212.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"178\" y=\"-197.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"150,-189.5 206,-189.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"178\" y=\"-174.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"206,-166.5 206,-212.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"247.5\" y=\"-197.3\">(None, 512)</text>\n",
       "<polyline fill=\"none\" points=\"206,-189.5 289,-189.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"247.5\" y=\"-174.3\">(None, 256)</text>\n",
       "</g>\n",
       "<!-- 2250072541392&#45;&gt;2249866395832 -->\n",
       "<g class=\"edge\" id=\"edge4\"><title>2250072541392-&gt;2249866395832</title>\n",
       "<path d=\"M167.5,-249.366C167.5,-241.152 167.5,-231.658 167.5,-222.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"171,-222.607 167.5,-212.607 164,-222.607 171,-222.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 2250072534488 -->\n",
       "<g class=\"node\" id=\"node6\"><title>2250072534488</title>\n",
       "<polygon fill=\"none\" points=\"33,-83.5 33,-129.5 302,-129.5 302,-83.5 33,-83.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"98\" y=\"-102.8\">dropout_2: Dropout</text>\n",
       "<polyline fill=\"none\" points=\"163,-83.5 163,-129.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"191\" y=\"-114.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"163,-106.5 219,-106.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"191\" y=\"-91.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"219,-83.5 219,-129.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"260.5\" y=\"-114.3\">(None, 256)</text>\n",
       "<polyline fill=\"none\" points=\"219,-106.5 302,-106.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"260.5\" y=\"-91.3\">(None, 256)</text>\n",
       "</g>\n",
       "<!-- 2249866395832&#45;&gt;2250072534488 -->\n",
       "<g class=\"edge\" id=\"edge5\"><title>2249866395832-&gt;2250072534488</title>\n",
       "<path d=\"M167.5,-166.366C167.5,-158.152 167.5,-148.658 167.5,-139.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"171,-139.607 167.5,-129.607 164,-139.607 171,-139.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 2250083045048 -->\n",
       "<g class=\"node\" id=\"node7\"><title>2250083045048</title>\n",
       "<polygon fill=\"none\" points=\"46,-0.5 46,-46.5 289,-46.5 289,-0.5 46,-0.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"98\" y=\"-19.8\">dense_3: Dense</text>\n",
       "<polyline fill=\"none\" points=\"150,-0.5 150,-46.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"178\" y=\"-31.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"150,-23.5 206,-23.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"178\" y=\"-8.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"206,-0.5 206,-46.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"247.5\" y=\"-31.3\">(None, 256)</text>\n",
       "<polyline fill=\"none\" points=\"206,-23.5 289,-23.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times New Roman,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"247.5\" y=\"-8.3\">(None, 10)</text>\n",
       "</g>\n",
       "<!-- 2250072534488&#45;&gt;2250083045048 -->\n",
       "<g class=\"edge\" id=\"edge6\"><title>2250072534488-&gt;2250083045048</title>\n",
       "<path d=\"M167.5,-83.3664C167.5,-75.1516 167.5,-65.6579 167.5,-56.7252\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"171,-56.6068 167.5,-46.6068 164,-56.6069 171,-56.6068\" stroke=\"black\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import SVG\n",
    "from keras.utils.vis_utils import model_to_dot\n",
    "\n",
    "SVG(model_to_dot(clf_model, show_shapes=True, \n",
    "                 show_layer_names=True, rankdir='TB').create(prog='dot', format='svg'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Compile the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "clf_model.compile(loss=keras.losses.categorical_crossentropy,\n",
    "              optimizer=keras.optimizers.Adadelta(),\n",
    "              metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train the classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/50\n",
      "50000/50000 [==============================] - 8s - loss: 7.2495 - acc: 0.2799     \n",
      "Epoch 2/50\n",
      "50000/50000 [==============================] - 7s - loss: 2.2513 - acc: 0.2768     \n",
      "Epoch 3/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.9096 - acc: 0.3521     \n",
      "Epoch 4/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.7601 - acc: 0.4020     \n",
      "Epoch 5/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.6501 - acc: 0.4355     \n",
      "Epoch 6/50\n",
      "50000/50000 [==============================] - 8s - loss: 1.5804 - acc: 0.4581     \n",
      "Epoch 7/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.5295 - acc: 0.4766     \n",
      "Epoch 8/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.4790 - acc: 0.4953     \n",
      "Epoch 9/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.4420 - acc: 0.5078     \n",
      "Epoch 10/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.4102 - acc: 0.5183     \n",
      "Epoch 11/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.3822 - acc: 0.5278     \n",
      "Epoch 12/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.3569 - acc: 0.5389     \n",
      "Epoch 13/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.3359 - acc: 0.5461     \n",
      "Epoch 14/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.3148 - acc: 0.5534     \n",
      "Epoch 15/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.2919 - acc: 0.5628     \n",
      "Epoch 16/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.2676 - acc: 0.5674     \n",
      "Epoch 17/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.2588 - acc: 0.5713     \n",
      "Epoch 18/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.2441 - acc: 0.5776     \n",
      "Epoch 19/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.2225 - acc: 0.5861     \n",
      "Epoch 20/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.2082 - acc: 0.5909     \n",
      "Epoch 21/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.1935 - acc: 0.5966     \n",
      "Epoch 22/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.1786 - acc: 0.5999     \n",
      "Epoch 23/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.1657 - acc: 0.6026     \n",
      "Epoch 24/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.1531 - acc: 0.6085     \n",
      "Epoch 25/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.1421 - acc: 0.6138     \n",
      "Epoch 26/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.1328 - acc: 0.6158     \n",
      "Epoch 27/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.1204 - acc: 0.6191     \n",
      "Epoch 28/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.1085 - acc: 0.6228     \n",
      "Epoch 29/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.0986 - acc: 0.6274     \n",
      "Epoch 30/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.0914 - acc: 0.6313     \n",
      "Epoch 31/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.0770 - acc: 0.6341     \n",
      "Epoch 32/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.0714 - acc: 0.6366     \n",
      "Epoch 33/50\n",
      "50000/50000 [==============================] - 7s - loss: 1.0603 - acc: 0.6417     \n",
      "Epoch 34/50\n",
      "50000/50000 [==============================] - 8s - loss: 1.0459 - acc: 0.6433     \n",
      "Epoch 35/50\n",
      "50000/50000 [==============================] - 8s - loss: 1.0400 - acc: 0.6483     \n",
      "Epoch 36/50\n",
      "50000/50000 [==============================] - 8s - loss: 1.0305 - acc: 0.6465     \n",
      "Epoch 37/50\n",
      "50000/50000 [==============================] - 8s - loss: 1.0145 - acc: 0.6547     \n",
      "Epoch 38/50\n",
      "50000/50000 [==============================] - 8s - loss: 1.0149 - acc: 0.6531     \n",
      "Epoch 39/50\n",
      "50000/50000 [==============================] - 8s - loss: 0.9974 - acc: 0.6587     \n",
      "Epoch 40/50\n",
      "50000/50000 [==============================] - 8s - loss: 0.9915 - acc: 0.6622     \n",
      "Epoch 41/50\n",
      "50000/50000 [==============================] - 8s - loss: 0.9863 - acc: 0.6618     \n",
      "Epoch 42/50\n",
      "50000/50000 [==============================] - 8s - loss: 0.9816 - acc: 0.6644     \n",
      "Epoch 43/50\n",
      "50000/50000 [==============================] - 8s - loss: 0.9754 - acc: 0.6666     \n",
      "Epoch 44/50\n",
      "50000/50000 [==============================] - 8s - loss: 0.9630 - acc: 0.6686     \n",
      "Epoch 45/50\n",
      "50000/50000 [==============================] - 8s - loss: 0.9503 - acc: 0.6755     \n",
      "Epoch 46/50\n",
      "50000/50000 [==============================] - 8s - loss: 0.9479 - acc: 0.6752     \n",
      "Epoch 47/50\n",
      "50000/50000 [==============================] - 8s - loss: 0.9403 - acc: 0.6787     \n",
      "Epoch 48/50\n",
      "50000/50000 [==============================] - 8s - loss: 0.9368 - acc: 0.6814     \n",
      "Epoch 49/50\n",
      "50000/50000 [==============================] - 8s - loss: 0.9223 - acc: 0.6832     \n",
      "Epoch 50/50\n",
      "50000/50000 [==============================] - 8s - loss: 0.9197 - acc: 0.6830     \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.History at 0x20b81e25320>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf_model.fit(bottleneck_features_train, y_train,\n",
    "          batch_size=batch_size,\n",
    "          epochs=epochs,\n",
    "          verbose=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Predict and test model performance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " 9600/10000 [===========================>..] - ETA: 0s"
     ]
    }
   ],
   "source": [
    "score = clf_model.evaluate(bottleneck_features_test, y_test, verbose=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test loss: 1.20768193054\n",
      "Test accuracy: 0.6352\n"
     ]
    }
   ],
   "source": [
    "print('Test loss:', score[0])\n",
    "print('Test accuracy:', score[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Assign label to a test image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def predict_label(img_idx,show_proba=True):\n",
    "    plt.imshow(x_test[img_idx],aspect='auto')\n",
    "    plt.title(\"Image to be Labeled\")\n",
    "    plt.show()\n",
    "    \n",
    "    print(\"Actual Class:{}\".format(np.nonzero(y_test[img_idx])[0][0]))\n",
    "    \n",
    "    test_image =np.expand_dims(x_test[img_idx], axis=0)\n",
    "    bf = vgg_model.predict(test_image,verbose=0)\n",
    "    pred_label = clf_model.predict_classes(bf,batch_size=1,verbose=0)\n",
    "    \n",
    "    print(\"Predicted Class:{}\".format(pred_label[0]))\n",
    "    if show_proba:\n",
    "        print(\"Predicted Probabilities\")\n",
    "        print(clf_model.predict_proba(bf))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nQV5EJMf+P9H2DV8cUIrhAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b84d21e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Actual Class:8\n",
      "Predicted Class:8\n",
      "Predicted Probabilities\n",
      "1/1 [==============================] - 0s\n",
      "[[  1.48474507e-03   3.18384357e-03   2.22270580e-09   1.51026228e-07\n",
      "    3.13638199e-10   5.12283584e-11   8.54018176e-11   5.50038418e-11\n",
      "    9.84005570e-01   1.13256825e-02]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b84e7ee48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Actual Class:5\n",
      "Predicted Class:5\n",
      "Predicted Probabilities\n",
      "1/1 [==============================] - 0s\n",
      "[[  3.66592516e-08   3.57114695e-05   7.51468833e-05   1.46524936e-01\n",
      "    9.77872929e-08   8.52767646e-01   5.81625965e-04   1.08531840e-05\n",
      "    2.67574318e-08   3.92325774e-06]]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAENCAYAAADqsBXqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XucXXV57/HPs+eayZBJAiEJCeFSQC6iXCIKKCIVS9FS\na21fx57yKpWKVduqeK2lRypeWtsjXtrKiZfS1ra2px6OR0tRqIVquAZB5BYJkJArScg9c9uz9+/8\nsVZ02E5mf1eykz1Zft+v17xg9n72b/3WWnueWbP2k+cXKSXMzKycKu2egJmZHThO8mZmJeYkb2ZW\nYk7yZmYl5iRvZlZiTvJmZiXmJG+Wi4grImKs3fOYSERcGBEpIhZOkXGOzcd5+f6MYweek/zPsIi4\nMSJua/c89kdE/GZETPl/7BERt0fEF9s9D/vZ4yRvZlZiTvL2Y3uu7CPi9yNiTUTsiogvRkRXRPxu\nRKyKiK0RsSQiuse97uL8SnVLRGyPiDsi4pyGsY+LiG9HxHA+zu82Xt3m27k2Ip7O4x6JiLdOMt8L\ngb/P/z/lXzeOG+tPI2JtRIxGxKMR8RvicXh1vu3hiLgnIs5oeP7sfF92RcSmiPg/EXGMMvYk23xn\nRDyYj7khIr4aEfMnCD0zIu7N5/ZwRFzUMM4JEfG1iNiWn6tvR8TpTbbd9DUR8esRsSLf7p3Ai/Zn\nf+3gcZK3RucAi4GLgTcBvwn8P+A84JL8+8uBK8e9ph/4a+DcPO4J4JaIOBwgIgK4CRgALgB+GbgM\nOLNh218A3gC8FTgF+AjwZxFxJRO7E/i9/P/n51/vzL//OPAW4F3AC4GvAF+JiJ9vsv8V4JPA2/Nj\nsQn4t4iYlu/LqcAdwF35cboIqAG3RkRvk7GbeS9wOvArwCLgqxPEfIrsuJwJ3AN8Y88vg4iYC3wP\n2Ai8AngZsBy4PSLmTLRB5TURcSbwT8D/Bl4M/AXwmf3cVztYUkr++hn9Am4Ebmv4fiPQPe6xfwM2\nAz3jHvs68K+TjFsBtgL/Pf/+YiABJ4yLmQ0MAl/Mvz8OqAMnN4z1P4AHJ9nWb2Zv4+c91geMAG9v\nePwm4DuTjHVFPs+fH/fYLGAXcOW4Y/TVhtf15Pvy+knGvn3Pvorn5sx8Lgvy7y/Mv79yXEwnsAq4\nLv/+WuDuhnECeBJ4V8M4Cwu85ivA0oaY38vHeXm738f+mvyrcy+53352PZZSGh33/QZgeUpppOGx\nU/Z8ExHHkV1dngscSZbk+4A9tzBOBTanlFbseU1KaUtELB835mKy5LIsu/D/sU6yK+UiTgC6gf9q\nePwO4A+F1981bp5bI+Ix4LT8oZcAJ0TErobX9AInFpznj+W3nv6Q7FjN5Cd/ZR8DrN3L3MYi4t6G\nuZ09wdymTTI35TWnAv/R8Pz3Jtsfmzqc5K1RteH7tJfHxt/q+ybZ1f47gNXAKFkS6G54zWT2jHce\n2VVx4/amigrZ5wB/OsFzz+3LgBGxCLg5H/cjZMdyIXAbzz+Gytz+g5/cwhpvewtfY4cQJ3nbL/l9\n91OBS1NK38ofW0h2Rb/Ho8CciPi5lNKTecws4CTg/jxmz38XpZS+WWAKo/l4HSmlPVf8K8hu11wA\nPDwu9pUN3+/Ny4Dv5OPOJPur5X/lzy0j+9DxyZTft2iBl5BdOb8rpTSUb/fsSeb2aB7TSfa5wd+P\nm9sVwJqU0rC4beU1j5L98h3vfHF8azN/8Gr7ayvZh5NviYiTIuJcsg/phsbF3Ab8APj7iHhJRLyY\nLDGNkV+l57dyvgx8ISIuzys+XhwRb46ID0yy/afz/14WEXMioj+lNAh8FrguIn4tn9eHyD7w/XiT\n/UnAJyPigrzC5O+AncA/5s9/nCzpfyUizsmrhl4VEZ+JiOObjD07Is5o+Dqe7IPqBLwnH+/1ZJ9F\nTOSDEXFpRJwCfB6YQ/ahN8BfAh3A1yPiFZH9g6WXR8THIqIxSVPgNdcD5+aPnRQRvwK8p8m+2lTR\n7g8F/NW+Lyb+4PW2hpgvArc3PHYD8L1x37+SLIkPk1Vm/CrZ1fS142KOA27NY1aT3dq5F/jcuJgO\n4P3A42RX6JvJ7qP/WpP9+DTZB8YJuDF/rIvslsrafKxHgd9oMs4VZL94XgM8RvbXwL3AWQ1xp5N9\n+LyV7JfZCmAJMHuSsW/P59f4dUv+/J5bXUNkt7ouyZ+/MH/+wvz7y8j+6hnJ9+nihu0cA/wD2S/e\nEbIPZr8CHNcwzkL1NXnMfyP7MHaErKrnl/EHr4fEV+Qn0OygiojDgDXANSmlz7V7PmZl5XvydlBE\nxGVkV8mPkd2v/zDZleC/tHNeZmXnJG8HSx/ZfeZjgd1ktxxenlJ6tp2TMis7364xMysxV9eYmZVY\ny27XRMSl/KS8bD3w2ZTSp5q9bmDW7DRvwdHNN1Df3xnunzSl/j3O3qmzjOYhhWMroY8aFS22XteP\ne138q1Q9lykVOUqaQn85t37zbVXoPVfgvdRqxbatnc8osvdi6I8eeWhzSmnCnkTjtSTJR8RispKy\nvyBravVS4IaIGEwp3TDZa+ctOJob/uVbTbdRH9X/ZXsldUhxqUAb8lpS15LQx1R/3ov8glGTYpE/\n4boq2vHs69H/cWZvt/ZOHhxt/Me2e7dbjB2uaceonoocJW1/xqr6/qAmmwL5Q74IKJRjtWDx9zoA\nnR3asa+Efo7U5F0pMNEOMYdUKvo8K+K+X3Tq/FVKXKuu5K8G7ksp7ekL8lhEnAZ8kKym2szM2qBV\n9+TPB25peOwW4JjYz2XGzMxs37Uqyc8n60w43oZxzz1PRFwVEcsiYtn2LfvU08nMzARtqa5JKS1J\nKS1OKS0emH14O6ZgZvYzoVVJfj0wr+GxueOeMzOzNmjVB69LgV8g64W9xyXAqpTSmslemDUrb14f\nWStSwpi0Spx6Xa/LrIljFpqmGFek0EGtNij0b+DEXR8sUAG1e1Q79kMFqlFGatr2a+oRTfr7Qy2R\nK3Lck/j+LFINopfNtL6EUT7uAHUttkgVkBpb5Mq33qFWs+nvpY4Wl+626kr+euCcvBXpyRHxW8Dv\nM/HCCmZmdpC0JMmnlO4DXg+8jqzl7EeAP2pWI29mZgdWy/7Fa0rp38gWfTYzsynCvWvMzErMSd7M\nrMSc5M3MSqzti4aklBirNy99GytQzlYTQ4t0BFTL2Q6EA9G4sFJkTDF2uKqXUNbE64uxAmV36pjy\n8Szy/lDfn4WamYrleQVK7tRyyyINtdTjVGTXk1hyWKRjZIjlxVEg1xBibGhN/oBCpbsKX8mbmZWY\nk7yZWYk5yZuZlZiTvJlZiTnJm5mVWNurawCpHKaulswA4upuJDUQQFxWr0jDJLV4o8Ayp9TV5cgK\njKnH6jsv9p+S122FImu3au+lVGD5P3U92GJrvIpjFnmDiNsvsiapWrWS5CU0AbHZ3IHoUKYuvwdQ\nEa+TO8UlNKFApZbIV/JmZiXmJG9mVmJO8mZmJeYkb2ZWYk7yZmYl5iRvZlZi7S+hTAnGmpcMJbWk\nCr2cTa7jA0KObX1ZZr1AmdiYuo7lASihLLIyZRIbOxUpJ0tJWw82CQ3xAOrRJW+7rr7nCpWEtjYO\nCqxFS4FyR3HfOzv0c9nbJZZlFuv4Juko8EbuVDdf1Y9noZJYga/kzcxKzEnezKzEnOTNzErMSd7M\nrMSc5M3MSsxJ3sysxFpSQhkR1wIfnuCpE1NKKyZ9LdAllMlVC6yxGnL3wNb/jivSNVGNLVJSFXJp\nojykHFvpLNJpT4wrsO8paduv19SOkUWKQkWFhtT2vaYuwgskcQId4jECCPHnqKdbL0kd6Gl9V099\nPVh93wero1JckVJgtaunqpV18iuBcxse29TC8c3MrKBWJvlaSmlDC8czM7P91Mq/CxZGxJr8698j\n4rwWjm1mZvugVUn+XuC3gdcCbwKeA74bERdPFBwRV0XEsohYtn3rlhZNwczMGrXkdk1K6eaGh74b\nEQuB9wG3ThC/BFgCcNKpp7e++YSZmQEHtoTybuDYAzi+mZk1cSC7UJ4FrG4WVIlgek9308HqYodB\ngCQ2rBwrUCJXV8vZCrUE1H7HVgqUyHWK86wXWSxYLD3r621+Hveo1rTzWavr1yEjw1qnP7UsM4p0\nwBQ7WxZq/4m4fbFsFgCxzLS7q0cesruinaPpBUps1a0XKaFUz3u9wDmqiCmkWtPPUYE1vyWtqpP/\nFPBNsjLKGcBbgFcDv9yK8c3MbN+06kp+PvB3wBxgO/AQ8OqU0ndaNL6Zme2DVn3w+qZWjGNmZq3l\n3jVmZiXmJG9mVmJO8mZmJdb+hbzRujF2FSjpUrvy1asFSuTQSuSiSEmXGlugK13I9Vf6wuh1sfyr\nWtXHHKtrJZSdXfpbtKdXO547tm+X4qoj+uLLvT3TpLiezl55zM4OLbZTreMD+nq0n6NpBTpGjomd\nGDsLlCaOqGXQVb20Wi0F7irwnuusaLEdXS2uiyzAV/JmZiXmJG9mVmJO8mZmJeYkb2ZWYk7yZmYl\n1vbqmno9MTTc/NP5sbr+6fSYuoZngfVD5UVJi/T9EuNqY3rVSlXszlYpULGjrnU6NKhXOoxVteO5\nbbu+2NjatSuluKeeflKK275th7zt/mmHSXGHTZ+hj9k7XYrrm94nj9nbo1XNdBeorgmxmm3OkYfL\nYx618Cg5VlURG6nVC3UI0/Zd3bY+os5X8mZmJeYkb2ZWYk7yZmYl5iRvZlZiTvJmZiXmJG9mVmJt\nL6FMKTE61rzusDamFxbVC5RbqpK63meBskyxXxIdBUq6OkNbZ7WmrkkK7NihNfRa/cwaeczlj67Q\nxlzTdJngH9ux4zkpbtcurTSyu0tfs3bO7DlSXHVI3x917dTefq05GsDO4UEprlrVm7ONiLEvOOVE\necw3/tplUlyP2HANIMS1cEcL/AxXxKZrRUqWQ00MIl/Jm5mVmJO8mVmJOcmbmZWYk7yZWYk5yZuZ\nlZiTvJlZiUkllBFxAfAe4AxgEfDHKaWPNsS8FLgeOAvYCtwIXJNSk7aIEVItYRQoQeoMrTK02dTG\nq4ldKLs79apUtSxzSF3wEti0WevauHz5j+QxH3roISlu47PPymN2d2plYnOO0DsXbhO7ddbF6sCB\nI2bJ237ta1+jbXt4lzxmbWSnFHfUUXPlMZ/dskWK27FTW7cVYO36zVLc9kGtfBNgSCirBgi9WSZJ\n7RipvkGACLHra4F1eCuFumAK44lx/cCjwPuBn8oiEXE0cCuwHDgbeBvwVuBjrZmmmZntC+myM6V0\nM3AzQET82QQhbwN2AFem7PL0kYhYAHwyIq5LKe1u1YTNzEzXqnvy5wPfTs+//3AL0Aec2aJtmJlZ\nQa1K8vP56ds4G8Y99zwRcVVELIuIZdu3avcIzcysuLZU16SUlqSUFqeUFg/Mmt2OKZiZ/UxoVZJf\nD8xreGzuuOfMzKwNWtWFcilweURUxt2XvwQYBB6Y7IUpJWq15qVNYwW6UKrd5lKBssyRqlYqtWad\nXka4fr1W7vjkipXymM+sWivFDQ5p5XkAh/VrC0r/4iWvlMd88elaR8Idu4flMZcs+QcprrdHK1F7\n4ckL5G2vXvkDKe70k4+Xx5x/hLb9/v5eecxFCwekuOVP6B1Fn3lSWxi9o8A15diYVsZYYI17WU3M\nH6Dnmkj6vne0eClvacsR0R8RZ0TEGUA3MC///oQ85PPAAPCFiDgtIi4DrgM+58oaM7P2UX+9LCa7\nIn+A7IPUd+T//0WAlNJq4DXAKcD9wJL8649aPF8zMytArZO/HZj0n2yllO4GzmvBnMzMrEXcu8bM\nrMSc5M3MSsxJ3sysxNq+kHd2q795K7mq2AUSYNv2rVLc6rVauSHAkyueluKeWa2Xng0Oj0hxHQXK\nr048bqEUV09D8pjz52uLVM8a0BeUHhvRSiO/u1QrTQTYukM7nsccqZUR/tLF58rbvnvpHVLcxtVa\nuSHA4X1amemmQW2hdYBq0rohPr3yKXnM3YPawuj9h2vvI4DaqPb+rHfp7zlCK53tKNIEUuwkmwp0\np1W68hbhK3kzsxJzkjczKzEneTOzEnOSNzMrMSd5M7MSc5I3MyuxtpdQjo5WeWbVuqZxP3j4cXnM\np1Zp5V/bt2ulXwC1qtYVb+HRP7VGyl4tPvNUKW5spCqPeepJWpfDbdu0xZcBamKnv7vvvE8e80Uv\nPlmKO3y2vph2T5f4dq5rx3PZvffK2+7q0K6Xtm3VynsBfvjQD6W4aWKXUIDNW7dJccOjeifG44/T\nFhJftWGjPOamDVp584wT9PUoxuriQu+hl2sP79ZyyLTD9PdxvbUVlL6SNzMrMyd5M7MSc5I3Mysx\nJ3kzsxJzkjczK7G2V9fs2LGT2279TtO47Tt3yWN292i7NXfW4fKY5527WIqbNatPHnP2bK0q4tln\n9XVjV4sNsIaH9bVT5xx+tBTX2amvNdrd3S3FFVln9eEH+qW4SlWrMPnnf/6qvO0ecd3Y6b3afgPU\nx0bFbevHfXBwUIpLFb3Eo9Kp7fuaDZvkMfsHtCZyxx33AnnMOto81Uo6gNViI7dFP6fPc3r/YXKs\nwlfyZmYl5iRvZlZiTvJmZiXmJG9mVmJO8mZmJeYkb2ZWYlKtYURcALwHOANYBPxxSumj456/Avib\nCV56cUrptknHzl7fdA4vPv0UZaoADAyIpYkbtshjDg1qJYcjg1p5HsCMaUdJcXMP18rJALY+pzUe\nS7UCv9+TtnZqb1fztXr32LVbO57Lbv53ecxutHnOm6c1tVr+6E5529t2aOWORUoo+/u09Uvrej8t\nRka0Y1Sta/uTxWoN32bP1ksDx0a1Us9nnl4hj7ngeK2McURcfxhgy8b1UtyceXrjwunTtVJglVon\n3w88Cvwj8Om9xNSAxlWk9SxqZmYtJyX5lNLNwM0AEfFnk8RtaNG8zMysBVp5T74jIp6KiPURcXtE\nvK6FY5uZ2T5oVZJfDrwZeCPwBuD7wDci4sqJgiPiqohYFhHLRoZ3t2gKZmbWqCW9a1JKdwF3jXvo\nroiYDXwA+NIE8UuAJQCzjlhQ4GMjMzMr4kCWUN4NHHsAxzczsyYOZBfKs4DVTaMCOoRZ7NyhlybO\nPEzbrd4+ffcfXf6YFDdQYMyj5syQ4o44Ql8fctZMrUztqPnaupwAM/q1ksMVP1opj9nVrZVbnn7q\nifKYjz10vxQ3W+wUesQcvUtpPWlroh7Wp3eM7Ovt0eLEUkuAnbu0stDhql5CmcRLxYGBmfKYXRXt\neO7eqeeFkNdu1W8uqOdzVOz+CVCv6+vrKtQ6+X7ghPzbbmBeRJwB7EoprYiIa4F7gR8BPWT35q8E\n/qClszUzs0LUy87FwH+O+/4d+dcdwIXADOCvgHnAEPA48Osppa+1bKZmZlaYWid/O9k/Tt3b81cD\nV7doTmZm1iLuXWNmVmJO8mZmJeYkb2ZWYm1fyBsS9dS8XOukE7XFpAG6OrQSqGef0/unDczSOkHO\nnaWVRQJs26YtTl6p6L+Lj5yjdbvbunWrPOYjjzwixfX166V8u3YOSXFzZ2kdRQE6K9oCzD1dYrnj\nYfq2K51aSWgl1eQxJ/kY7Hm6evTun/Xd2r5Xa/o8Q0wjRbordlW0n+Hdu7bLY1bEEsrqqN6Fsktb\nG5zqqPZ+B0h1fSFxha/kzcxKzEnezKzEnOTNzErMSd7MrMSc5M3MSsxJ3sysxNpeQlmv1xkebb64\n8NPPrJXHfNmZL5TiFh2ll4l1dmvd5nq79YWa169dJ8WtWLlGHnPOvAXattdtlMe8555lUlxXV4ES\nyt3aYjHDw3qXwReepHXLrHSIC5N3690IR0a1ro3DBRaJRljgPovTS+6Gdu2Q4kbFBb8BxsRyy63d\n+jXlzOlax8qeTrGGEdi05ikpbueOTfKYY1Wtu+TOzfrP8KbO1l57+0rezKzEnOTNzErMSd7MrMSc\n5M3MSsxJ3sysxNpeXaPauOk5OfbBHzwsxc09co485uNik65169bLY27bpjVX2rhZ3/fhqlbpUK3q\n60iOVbUqk1CrQYB6aNsfG9PnuXtYa9TV1aWd95kzjpC3XRcLcXp6tHVbAYYGtaZWw8N6xc68I7VG\ne6NitRBAV5d23DvVbl7AvPlaldiiRXrjwg0btAqXNKatgwvQ2aFdJw8NalVNABvWrpJjFb6SNzMr\nMSd5M7MSc5I3MysxJ3kzsxJzkjczKzEneTOzEmtaQhkR7wPeAJxMtujkw8BHU0q3NMS9FLgeOAvY\nCtwIXJPS5Ita1mo1tm1t3oRqyxa9UdXjP9TKvzoKrJ26UVwPtkhjp0qHVlKW0BtlqU2tUoEh1WuB\nEPcnC9ZKIyvoJYebn9NKCXds1+Y5d45entc7TS3f1NdjTeJJ2rW7SNMzbd87C5zLjk6tEnvrts3y\nmLuHtJ+jdeu0Jn8AA9O1Y99d0df2HRN/NroLHM/RpL9HFMoMLwK+DLwKOAe4E/hmRJy/JyAijgZu\nBZYDZwNvA94KfKylszUzs0Ka/gpOKf1iw0Pvj4hLyK7ul+aPvQ3YAVyZUqoDj0TEAuCTEXFdSknr\nK2tmZi1V+J58RFSAGcD4xH0+8O08we9xC9AHnLlfMzQzs322Lx+8fgiYCSwZ99h8YEND3IZxzz1P\nRFwVEcsiYll1tMD9RDMzK6RQko+It5Ml+TemlPSlThqklJaklBanlBZ3iSsumZlZcXKSj4j3An8O\nXJZSuq3h6fXAvIbH5o57zszM2kCqfYqIjwDvBi5NKd0xQchS4PKIqIy7L38JMAg8MNnY1WqVZ9c3\n3un5ac9t1TvD9YilkWNVvdNeTSxn6+rS/zKpqPMc0+sdU10s1SpQQxkVsbtkXf/DsJ602NFRff3S\nGQN9UtwFrzxLivu///pP8rbvvedxKa5D7FoIUKtpZaajtao8Zu80bR3e2bO19XIBtm/XuqkuOvYY\necxXnf3zUtwDDz4mj3n0kVpJ7ECfvlbxWGjljrt3ax1FAQb1tCRp+o6LiE8D7wMuB5ZHxLz8a3zP\n0s8DA8AXIuK0iLgMuA74nCtrzMzaR7mSf2f+35saHv9b4AqAlNLqiHgN8CngfmAb2Qez17RmmmZm\nti+UOnnpb/WU0t3Aefs9IzMzaxn3rjEzKzEneTOzEnOSNzMrsbYv5J3qdYaHmpcXdXTqndnUsrt6\nkZI/tROkXvEnd2JMNb2DXaAdp1pNr9NKaIuDd3bqC3l3VLS3XtT0fxE9a4Z2nM54kVbK98//oC++\nvPLpJ6S4SoHFztUupccep5cmjgxr+7TyqWflMZUSaIBjFh4pj3nKicdLcQ9+/4fymB0HoOtrT7f2\n81Yd0X/ehguUDSt8JW9mVmJO8mZmJeYkb2ZWYk7yZmYl5iRvZlZiTvJmZiXW9hJKEiB02yvQaI+K\nuFhxpUMvZ1O7NtbqBTpGqqVak6+F/jwdoZVqdXZr5ZsAqa6NWa8V6EVX0459fUTv3rdr62FS3NCu\nXVJcFKiH7ejQjuf06foi0TNnzpTiZs0YaB6Ue+KJTVLcLvEYATCmnctKTf/ZGNy+VYpbv26tPOYJ\nJxwrxYnNYQEYG9TmmcSOogDDwwWSncBX8mZmJeYkb2ZWYk7yZmYl5iRvZlZiTvJmZiXW9uqazkpw\n5LTm01g/OiiPWRerUYZ2aZ+MAyS6pbiO3lnymHSKDZMqBdZjVRtg6UMytF1rVjVW3SKPGTXtrVcb\n1itcNqzRduq2/7hbitu2S9/2nAXa+qEzB2bIY+7Yoa2d+sTKVfKYdXFN0v6Zc+Qxu4a16qtnN+kN\n3+67+0EpLpLevG/noFaptWOXXtG14zkth8yYoeeFSq/+HpHGa+loZmY2pTjJm5mVmJO8mVmJOcmb\nmZWYk7yZWYk5yZuZlVjTOraIeB/wBuBkIICHgY+mlG4ZF3MF8DcTvPzilNJtk24g1YjR5qVVXXW9\n+VUwIsVt3qKtywkwbbq2PmVXr9ZUCoCOPimsXmDt1Eji7+2qXh6YxDFTTS89izFtzChQ6zk0rJVw\n3vT1W5oHASM1vZlYb/+JUtzGrXrZ7shIvxTX1TNNHjO6teZXqUBp4uzZ86W4jVv0MuhvfesOKe6o\nY46Vx3z44cekuGqBRntdYnO2nun6mAuOO0mOVSjFyhcBXwbuAwaB3wG+GRGvTCktHRdXAxY2vFYv\nnDYzs5ZrmuRTSr/Y8ND7I+ISsqv7pQ2x2rLtZmZ2UBS+Jx8RFWAG0Pj3R0dEPBUR6yPi9oh4XUtm\naGZm+2xfPnj9EDATWDLuseXAm4E3kl3hfx/4RkRcOdEAEXFVRCyLiGVjRVYDMTOzQgr1romIt5Ml\n+ctSSmv2PJ5Sugu4a1zoXRExG/gA8KXGcVJKS8h/SfRN6y/QRcXMzIqQr+Qj4r3An5Ml+MkrZjJ3\nA8fu47zMzKwFpCv5iPgI8G7g0pSSVtsEZwGrm47d2UnXEYc3HWzXc2uaxuzR16F1xevr18vEuvrE\n34ehlyZWq9q6j5Wk/8FVEdeipcB6mz2dWilf1LQ4gPqY1pGwU+zUCdDfp3UK7e3WzmXfNK1sFmDH\n4LAUt3PdRnnMetLK80aq+hrAWRFcc4Fetrtw0Vwprq/AuazUtZ+j7j79PTcqdqft7tTeRwAdHdo8\n6wVumqxZ29r6FaVO/tPAW4E3AcsjYl7+1FBKaXsecy1wL/AjoIfs3vyVwB+0dLZmZlaI8uvlnfl/\nb2p4/G+BK/L/nwH8FTAPGAIeB349pfS1FszRzMz2kVIn3/TvtpTS1cDVLZmRmZm1jHvXmJmVmJO8\nmVmJOcmbmZVY2xfy7uruYd6in2sat3LFo/KYqap1u+ufNiCPWaVHihsZ1Huy1Tu0znSVDm3xZYC6\nVpVJJDEQoCaWO+oVcnTMmC3FdRUoZ6tWtNjndmrHvbrjSXnbtaSV0k0f0I/77t27pLixaoFy2C6t\nY2VPt97Zcv1abaH3CL3U8wWnnSrFLTr5RfKYVLR0N1bXSrABqGkdbyud+s8wBX7epW23dDQzM5tS\nnOTNzErMSd7MrMSc5M3MSsxJ3sysxJzkzcxKrO0llL09PZx8/HFN48Y26aVS99/9X1Jc6iiwUHOP\ntuj2rkEYzhibAAAIuklEQVS9g5xYzcbIbn1hFbF5HxF62V2gDTrrCH0R8+NPPluKmz+/cdngvbvn\nvu9Kcd39WunsrN5Z8rZ7e7Wyt84uvc60rp5MsXwToLtbLElVF4QHVjzxlDZkgQXpa2Ls9t1aeS9A\n7zTtZziJ7/eMVhLbUeAcRb21S2z4St7MrMSc5M3MSsxJ3sysxJzkzcxKzEnezKzEnOTNzEqs7SWU\n1EZg58qmYYdP1zvYdXVpJUijY9riywAVceHr3g59zLmHHyHFrVundfkDGBpTu+Lpv9/HatqxP6xv\nXvOgPbFaU0+miQslA0wXYzesekKKi3SYvO2ubu1HqV6glO68814mxZ18cvMS5D0e/uGDUtw99yyT\nxxwe0ro2dnYXWBx8rlbqWd+mn6PRXdr2Kx16rhkS972rS+8s2VWknavAV/JmZiXmJG9mVmJO8mZm\nJeYkb2ZWYk7yZmYl1rQkICIuB94FHA/0AiuBLwDXp5RSHvNS4HrgLGArcCNwTUqp6cfUqT7K8I7V\nTSc6rVevSjjrbG19yJERvRHQyLBWNTM6pje1mjZNa5A2vcB6mzt375TiqmN607PBIa1ipxP9eG5b\np62f+twzP5LHHN22SYob3KbtTzX0iojpM8TmVwWqa+5cuk6L+55+rbbpWW0N4pER7RgBkLSqlYHD\neuUhK4OHS3GbVz4kj9nbo82zs0Nfh7c6Jo5ZoGKmSKw0nhCzEbgOWA6MAK8A/hqoAZ+JiKOBW4Gv\nAW8BTgS+DATwwZbO1szMCmma5FNK32p46KmIeD1wIfAZ4G3ADuDKlFIdeCQiFgCfjIjrUkq7Wzxn\nMzMTFbonH5lzgPOB/8wfPh/4dp7g97gF6APObMkszcxsn0hJPiIGImIX2e2aO4HPpZQ+mz89H2hc\nKWPDuOcmGu+qiFgWEcuGxPu9ZmZWnNrWYCdwBtnV+XnAJyJiXUrpS/uy0ZTSEmAJwNw5s1q7DIqZ\nmf2YlOTzWzEr8m8fiohZwMeALwHrgcamJXPz/65vxSTNzGzf7GuDsgpZOSXAUuDyiKiMuy9/CTAI\nPNBsoKh00tvXfG3Qrh59PdbpM7XGX/W6vvujI1rpW7151eg42h8xxyw6Sh5xtCqWBxYooRwd1Zow\n1cb08sB6Tdt+XWwMB9A/Tet69kxNu/bYsntI3nZtVCuxDXFNUICdo9r2U11v/FUJtdmc/rNRFxvY\ndXcXKPXcul2KGy3wPl4wVyvL7OzVymEBOsXGdB2dRVLtQV7jNSL+JCJeHRHHR8QLIuItwAeAv81D\nPg8MAF+IiNMi4jKyksvPubLGzKy9lF8vM4AbgAXAMPAU8If5Y6SUVkfEa4BPAfcD28jut19zICZs\nZmY6pU7+3cC7m8TcTfaBrJmZTSHuXWNmVmJO8mZmJeYkb2ZWYpE3kmzfBCI2AasmeOoIYPNBns6B\n5P2Z+sq2T96fqW9/9umYlNKcZkFtT/J7ExHLUkqL2z2PVvH+TH1l2yfvz9R3MPbJt2vMzErMSd7M\nrMSmcpJf0u4JtJj3Z+or2z55f6a+A75PU/aevJmZ7b+pfCVvZmb7yUnezKzEnOTNzEpsSiX5iLg0\nIh6MiJGIWBkRV7d7TvsqIq6NiDTB1wntnpsqIi6IiK9HxKp87j/VWTQiXhoRd0bEcESsj4hPRERH\nO+bbTLP9iYgr9nLOXt2uOU8mIt4XEXdFxNaI2BYR34uISyaIOyTOkbI/h+A5ujwi7s/3aSgiHouI\nqyMixsUc0POzr4uGtFxELAa+DvwF8CbgpcANETGYUrqhrZPbdyuBcxse29SGeeyrfuBR4B+BTzc+\nGRFHA7cCXwPeApwIfBkI4IMHb5qySfcnVwMWNjy25UBOaj9cRHa87yNbpOd3gG9GxCtTSkvhkDtH\nTfcndyido41k62ssJ1sj+xXAX5Ptw2cOyvlJKU2JL7IfvDsbHvtzYGW757aP+3MtsKLd82jh/qwE\nrml47OPAGqAy7rF3ALuB6e2e8z7szxXAWLvntp/79RDwP8twjvayP2U4RzcBNx2s8zOVbtecD9zS\n8NgtwDER0fhb+1CxMCLW5F//HhFl67l/PvDt9JNlHyE7Z33Ame2Z0n7riIin8j+bb4+I17V7QqqI\nqJAt8jN+RbZD9hztZX/gED1HkTmH7Jz8Z/7wAT8/UynJzwc2NDy2Ydxzh5p7gd8GXkt2++k54LsR\ncXFbZ9VaZTtny4E3A28E3gB8H/hGRFzZ1lnpPgTM5Pn/wOZQPkcT7c8hd44iYiAidpHdrrmTbGnU\nz+ZPH/DzM2XuyZdNSunmhoe+m/9F8j6ye3A2xaSU7gLuGvfQXRExm2xN4y+1Z1aaiHg7WVK8LKW0\npt3z2V97259D9BztBM4guzo/D/hERKxLKR2U+U6lK/n1wLyGx+aOe64M7gaObfckWsjnbAqIiPeS\nfX51WUrptoanD7lz1GR/JjKlz1FKqZ5SWpFSeihlRSSfBD6WP33Az89USvJLgV9oeOwSYFUZrkxy\nZwGr2z2JFloKXJzfO93jErLKiAfaM6WWm9LnLCI+AnwYuHQvCfGQOkfC/kxkSp+jCVSA3vz/D/z5\nafcnzeM+UX4JUCX7DXcy8FvAEPC77Z7bPu7Pp8hKwo4n+1Ptr4A68EvtnluBfejP534GsA74y/z/\nT8ifPxrYQfZn8mnAZWSfPfxpu+e+j/tzLXApcEK+Px8mK3V7R7vnvpf9+XT+M/J6sqvBPV8D42IO\nmXMk7s+hdo7+BHh1ngdeQFYmuQP4zME6P20/CA0H5LXAD8g+oFgFXN3uOe3HvvwTWWnUCFmt7G3A\nRe2eV8F9uBBIE3zdPi7mZWQfJg2TfWD0CaCj3XPfl/3JfzE/nSeaLfl+/Wq75z3J/ky0Lwm4sSHu\nkDhHyv4cgufoemBFPt+twP1kJZId42IO6PlxF0ozsxKbSvfkzcysxZzkzcxKzEnezKzEnOTNzErM\nSd7MrMSc5M3MSsxJ3sysxJzkzcxK7P8D0Fh5CMWtN2AAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b84ed7208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Actual Class:9\n",
      "Predicted Class:9\n",
      "Predicted Probabilities\n",
      "1/1 [==============================] - 0s\n",
      "[[  1.07423693e-01   1.45525947e-01   9.38104291e-04   4.14230488e-03\n",
      "    3.73754185e-03   3.26172536e-04   4.70715531e-05   6.63721003e-03\n",
      "    1.52519494e-01   5.78702450e-01]]\n"
     ]
    }
   ],
   "source": [
    "img_idx = 3999 # sample indices : 999,1999 and 3999\n",
    "for img_idx in [999,1999,3999]:\n",
    "    predict_label(img_idx)"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
